home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / python-support / python-rdflib / rdflib / syntax / parsers / TriXParser.py < prev   
Encoding:
Python Source  |  2007-04-04  |  1.3 KB  |  45 lines

  1. from rdflib.syntax.parsers import Parser
  2. from rdflib.Graph import ConjunctiveGraph
  3.  
  4. from xml.sax import make_parser
  5. from xml.sax.saxutils import handler
  6. from xml.sax.handler import ErrorHandler
  7.  
  8. from rdflib.syntax.parsers.TriXHandler import TriXHandler
  9.  
  10.  
  11. def create_parser(store):
  12.     parser = make_parser()
  13.     # Workaround for bug in expatreader.py. Needed when
  14.     # expatreader is trying to guess a prefix.
  15.     parser.start_namespace_decl("xml", "http://www.w3.org/XML/1998/namespace")
  16.     parser.setFeature(handler.feature_namespaces, 1)
  17.     trix = TriXHandler(store)
  18.     parser.setContentHandler(trix)
  19.     parser.setErrorHandler(ErrorHandler())
  20.     return parser
  21.  
  22.  
  23. class TriXParser(Parser):
  24.     """A parser for TriX. See http://swdev.nokia.com/trix/TriX.html"""
  25.  
  26.     def __init__(self):
  27.         pass
  28.  
  29.     def parse(self, source, sink, **args):
  30.         assert sink.store.context_aware
  31.         g=ConjunctiveGraph(store=sink.store)
  32.         
  33.         self._parser = create_parser(g)
  34.         content_handler = self._parser.getContentHandler()
  35.         preserve_bnode_ids = args.get("preserve_bnode_ids", None)
  36.         if preserve_bnode_ids is not None:
  37.             content_handler.preserve_bnode_ids = preserve_bnode_ids
  38.         # We're only using it once now
  39.         #content_handler.reset()
  40.         #self._parser.reset()
  41.         self._parser.parse(source)
  42.  
  43.  
  44.  
  45.